#ifndef __POSTOPIA_THING_HEADER_HPP__
#define __POSTOPIA_THING_HEADER_HPP__

class Tile;
class Position;

class Thing
{
	public:
		virtual ~Thing();
		
		const Position getPosition() const;
		Position getPosition();
		
		Tile* getTile();
		const Tile* getTile() const;
		
		void setTile(Tile* tile);
		
		void retain()  { m_referenceCount++; }
		void release() { m_referenceCount--; if(m_referenceCount == 0) delete this; }
		
	protected:
		Thing();
		
		int m_referenceCount;
		
		Tile* m_tile;
};

#endif
